package com.suning.sawp.intf.promotion;

import java.io.File;
import java.util.List;

import org.apache.poi.ss.usermodel.Workbook;

import com.suning.sawp.dto.aircondition.CouponReq;
import com.suning.sawp.dto.aircondition.ValidActivityIdReq;
import com.suning.sawp.dto.common.MyQueryParam;
import com.suning.sawp.dto.common.QueryResult;
import com.suning.sawp.dto.common.ReturnMsg;
import com.suning.sawp.dto.precharge.CommonRtn;
import com.suning.sawp.dto.promotion.ActivityDetailInfo;
import com.suning.sawp.dto.promotion.CouponCommInfo;
import com.suning.sawp.dto.promotion.CouponDetailInfo;
import com.suning.sawp.dto.promotion.CouponRecordBean;
import com.suning.sawp.dto.promotion.CouponSendRecordBean;
import com.suning.sawp.dto.promotion.InnerCouponDetail;
import com.suning.sawp.dto.promotion.QueryActBean;

/**
 * 
 * 促销活动中心活动接口<br> 
 * 〈功能详细描述〉
 *
 * @author Wuxiao
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface PromotionActivityService {


    /**
     * 
     * 功能描述: 查询促销活动列表<br>
     * 〈功能详细描述〉
     *
     * @param type 类型   0 常用活动   1 城市活动
     * @param cityId 城市Id
     * @param oaAccountNo  店员工号
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<List<QueryActBean>> queryActivity(String type,String cityId,String oaAccountNo,Integer couponResource);
    
    /**
     * 
     * 功能描述: 查询发券记录<br>
     * 〈功能详细描述〉
     *
     * @param startIndex 起始
     * @param pageSize 分页大小
     * @param oaAccountNo 店员工号
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    QueryResult<CouponRecordBean> queryCouponRecord(MyQueryParam<String> param);
    
    /**
     * 查询活动详情
     * @param activityId
     * @param mobile
     * @param staffId
     * @return
     */
    ReturnMsg<ActivityDetailInfo> queryActivityDetail(String activityId,String mobile,String staffId);
    
    
    /**
     * 
     * 功能描述:确认发券 <br>
     * 〈功能详细描述〉
     *
     * @param activityId 活动Id
     * @param telNo 手机号
     * @param oaAccountNo 店员工号
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CommonRtn> sendCoupon(String activityId,String telNo,String oaAccountNo,String storeCode);
    
    /**
     * 
     * 功能描述: 查询导出数量<br>
     * 〈功能详细描述〉
     *
     * @param startTime
     * @param endTime
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    Integer queryExportCount(String startTime,String endTime);
    
    /**
     * 
     * 功能描述: 导出excel<br>
     * 〈功能详细描述〉
     *
     * @param startTime
     * @param endTime
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    File exportRecordExcel(String startTime,String endTime);
    
    /**
     * 功能描述: 后台查询发券记录<br>
     * 〈功能详细描述〉
     * 
     * @param startTime
     * @param endTime
     * @param regionCode
     * @param storeCode
     * @param activityName
     * @param startIndex
     * @param pageSize
     * @return
     */
    ReturnMsg<QueryResult<CouponSendRecordBean>> queryCouponSendRecord(String startTimeStr, String endTimeStr, 
    		String regionCode, String storeCode, String activityName, int startIndex, int pageSize);
    
    /**
     * 
     * 功能描述: 校验促销活动<br>
     * 〈功能详细描述〉
     *
     * @param activityId 活动Id明文
     * @param activityIdSec 活动Id密文
     * @param activityName 活动名称
     * @param cityId 城市Id
     * @param endTime 结束时间
     * @param startTime 开始时间
     * @param securityKey 秘钥
     * @param userId 工号
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CommonRtn> validActivity(String activityId, String activityIdSec, String activityName,
            String cityId, String endTime, String startTime, String securityKey,Integer couponResource,String storeCode,String userId);
    
    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    String synCouponRecord();
    
    /**
     * 
     * 功能描述: 导出发券记录统计<br>
     * 〈功能详细描述〉
     *
     * @param startTime
     * @param endTime
     * @param activityName
     * @param regionCode
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    Workbook exportSendCouponStat(String activityName,String startTime,String endTime,String regionCode,String storeCode);
    
    /**
     * 
     * 功能描述: 校验导出发券记录统计是否超过最大值<br>
     * 〈功能详细描述〉
     *
     * @param startTime
     * @param endTime
     * @param activityName
     * @param regionCode
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<String> checkSendCouponStatExport(String activityName,String startTime,String endTime,String regionCode,String storeCode);

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param type
     * @param cityId
     * @param userId
     * @param couponResource
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<List<QueryActBean>> queryActivityListNew(String type, String cityId, String userId, Integer couponResource);

    /**
     * 根据券规则编码查询券详情
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param couponRuleCode
     * @param userId
     * @param activityId 
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<ActivityDetailInfo> queryActivityDetailNew(String couponRuleCode, String userId, String activityId);

    
    /**
     * 保存验证过的券信息
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param validActivityIdReq
     * @param userId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CommonRtn> validActivityIdNew(ValidActivityIdReq validActivityIdReq, String userId);

    /**
     * 查询商品对应的券基础信息
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param couponReq
     * @param userId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<List<CouponCommInfo>> queryCouponByCommList(CouponReq couponReq, String userId);

    /**
     * 根据商品查询对应的券列表详情
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param actType
     * @param cityId
     * @param commCode
     * @param storeId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<List<InnerCouponDetail>> queryCouponInfoByComm(String actType, String cityId, String commCode, String storeId,String staffId);
}
